<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子组件访问父组件提供的数据</title>
</head>
<body>
<div id="app">
    <cpn></cpn>
</div>

<template id="cpn">
    <h1>这是一个自定义组件</h1>
    <div>{{ info }}</div>
</template>

<script type="module">
    import {createApp, ref, defineComponent, provide, inject} from "../../../js/vue.esm-browser.js";

    let component = defineComponent(
        {
            template: "#cpn",
            setup() {
                // 在子组件中通过变量获取父组件提供的内容。
                // 第一个参数获取的变量，第二个参数 默认值（当变量不存在的时候，可以使用的值。）
                let info = inject("info", "Hello, World!")
                // 示例-父组件中没有提供,使用默认值
                // let info = inject("asdf", "Hello, World!")

                return {
                    info,
                };
            }
        }
    );

    let app = createApp(
        {
            setup() {
                let information = ref("Hello, Vue!")

                // 在父组件中定义提供的名称和对应的值
                provide("info", information)
                return {}
            }
        }
    );

    app.component("cpn", component)

    app.mount("#app")
</script>
</body>
</html>